package com.itheima.mapper;

import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @version 1.0
 * @description 说明
 * @package com.itheima.mapper
 */
@Mapper
public interface DeptMapper {

    /**
     * 查询所有部门信息
     * Results查询的结果集进行手动映射，从什么到什么，从select字段名，到实体类的属性名
     *      多个字段映射，每个字段都要写一个Result
     *  Result对单个字段做映射 column：select的字段名，property:实体类属性名
     *      读取结果时，把column字段的值赋值给实体为的属性的值
     * @return
     */
    @Results(
        value = {
            @Result(property = "createTime", column = "create_time"),
            @Result(property = "updateTime", column = "update_time")
        }
    )
    @Select("select * from dept order by update_time desc")
    List<Dept> findAll();

    /**
     * 通过id删除部门
     * @param id
     */
    @Delete("delete from dept where id=#{id}")
    Integer deleteById(Integer id);

    /**
     * 新增部门
     * @param dept
     */
    @Insert("insert into dept (name,create_time,update_time) values (#{name},#{createTime},#{updateTime})")
    void insert(Dept dept);

    /**
     * 通过id查询部门信息
     * @param id
     * @return
     */
    @Select("select * From dept where id=#{id}")
    Dept selectById(Integer id);

    /**
     * 修改部门
     * @param dept
     */
    @Update("update dept set name=#{name}, update_time=#{updateTime} where id=#{id}")
    void update(Dept dept);
}
